package com.coderman.infosys.auth.api.facade.role;

import com.coderman.infosys.auth.api.dto.role.request.CreateRoleGroupRequestDTO;
import com.coderman.infosys.auth.api.dto.role.request.CreateRoleRequestDTO;
import com.coderman.infosys.auth.api.dto.role.request.UpdateRoleGroupRequestDTO;
import com.coderman.infosys.auth.api.dto.role.request.UpdateRoleRequestDTO;
import com.coderman.infosys.plat.auth.common.dto.ResultDataDto;

import java.util.List;


/**
* @Description:接口
* @Author:
* @CreateTime:2022-01-02 15:27:39
* @version v1.0
*/
public interface RoleGroupFacade {

	/**
	 *
	 * @Description 创建角色组
	 * @param createRoleGroupRequestDTO
	 * @return RoleDTO
	 */
	ResultDataDto<Boolean> createRoleGroup(CreateRoleGroupRequestDTO createRoleGroupRequestDTO);

	/**
	 *
	 * @Description 修改角色组信息
	 * 这里由于角色本身可能没有太多信息
	 * 所以这个修改的方法可能没有什么意义，
	 * 有意义的地方应该是我们对启用和禁用会感兴趣
	 *
	 * 大多数常规的情况我们通过修改来修改状态，或者为了少写启用禁用的接口走这个逻辑
	 * 那么基于领域驱动设计的方法需要更多的考虑接口方法的业务含义而不是CURD
	 * @param updateRoleGroupRequestDTO
	 * @return Boolean
	 */
	ResultDataDto<Boolean> updateRoleGroup(UpdateRoleGroupRequestDTO updateRoleGroupRequestDTO);

	/**
	 * 禁用角色组
	 * @param roleGroupCode
	 * @return
	 */
	ResultDataDto<Boolean> disableRoleGroup(String roleGroupCode);

	/**
	 * 启用角色组
	 * @param roleGroupCode
	 * @return
	 */
	ResultDataDto<Boolean> enableRoleGroup(String roleGroupCode);

}